import {createRouter, createWebHistory} from "vue-router";
import type { RouteLocationNormalized, RouteLocationNormalizedLoaded,NavigationGuardNext} from "vue-router";
import Index from "@/views/Index/index.vue";
import NoFound from "@/views/NoFound/index.vue";
import Login from "@/views/Login/index.vue";
import useAdmin from "@/store/modules/admin.ts";
import store from "@/store";
const adminStore = useAdmin(store);
const router = createRouter({
    history:createWebHistory(),
    routes:[
        {
            // 主界面
            path:"/",
            name:"index",
            meta:{
                // 需要验证是否登陆过
                isAuth:true
            },
            component:Index
        },
        {
            // 登陆
            path:"/login",
            name:"login",
            component:Login
        },
        {
            // 404
            // :pathMath(.*)*
            // :pathMath---->可以代表路由的任意部分
            // .* 重复的次数为0次或多次
            // *表达式可以为多次
            path:"/:pathMath(.*)*",
            name:"noFound",
            // path:"*",
            component:NoFound
        }
    ]
});
// 路由守卫
router.beforeEach(async function(to:RouteLocationNormalized,_:RouteLocationNormalizedLoaded,next:NavigationGuardNext){
    // 判断路由是否需要验证权限
    if(to.meta.isAuth){
        // 判断有没有token,如果没有token说明没有访问的权限，需要跳转至登陆界面
        if(adminStore.token){
            // 判断是否获取了个人信息，如果未获取个人信息，重新获取一次即顶号
            if(!adminStore.info)
                await adminStore.getAdminInfoAsync();// 获取个人信息
            next();
        }else{
            next("/login")
        }
    }else{
        next();
    }
})
export default router;